package com.bamboo.mall.product.entity.dto.category;

import com.bamboo.common.utils.DTOConverter;
import com.bamboo.mall.product.entity.CategoryEntity;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * @author : bamboo
 * @date : 2020-04-08
 */
@Data
@RequiredArgsConstructor(staticName = "newInstance")
@Accessors(chain = true)
public class CategoryDetailDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 分类id
     */
    private Long catId;
    /**
     * 分类名称
     */
    private String name;
    /**
     * 父分类id
     */
    private Long parentCid;
    /**
     * 层级
     */
    private Integer catLevel;
    /**
     * 是否显示[0-不显示，1显示]
     */
    private Integer showStatus;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 图标地址
     */
    private String icon;
    /**
     * 计量单位
     */
    private String productUnit;
    /**
     * 商品数量
     */
    private Integer productCount;

    /**
     * 子分类列表
     */
    @JsonInclude(value = JsonInclude.Include.NON_EMPTY)
    private List<CategoryDetailDTO> children;

    public CategoryEntity convertToCategoryEntity() {
        return new DTOConverter<CategoryDetailDTO, CategoryEntity>(null, CategoryEntity.class).convert(this);
    }

    public static CategoryDetailDTO convertFor(CategoryEntity user) {
        return new DTOConverter<CategoryDetailDTO, CategoryEntity>(CategoryDetailDTO.class, null).reverse().convert(user);
    }
}
